package net.suncaper.hotel.mapper;

import net.suncaper.hotel.model.domain.CheckIn;
import java.util.Date;
import java.util.List;

/**
 * 入住登记数据访问接口
 */
public interface ICheckInMapper {
    
    /**
     * 根据ID查询入住记录
     */
    CheckIn findById(Integer id);
    
    /**
     * 根据预订ID查询入住记录
     */
    CheckIn findByReservationId(Integer reservationId);
    
    /**
     * 根据房间ID查询当前入住记录
     */
    CheckIn findCurrentByRoomId(Integer roomId);
    
    /**
     * 查询所有入住记录
     */
    List<CheckIn> findAll();
    
    /**
     * 根据状态查询入住记录
     */
    List<CheckIn> findByStatus(String status);
    
    /**
     * 查询今日入住
     */
    List<CheckIn> findTodayCheckIns(Date date);
    
    /**
     * 查询今日退房
     */
    List<CheckIn> findTodayCheckOuts(Date date);
    
    /**
     * 分页查询入住记录
     */
    List<CheckIn> findByPage(int offset, int pageSize);
    
    /**
     * 统计入住记录总数
     */
    long count();
    
    /**
     * 新增入住记录
     */
    int insert(CheckIn checkIn);
    
    /**
     * 更新入住记录
     */
    int update(CheckIn checkIn);
    
    /**
     * 办理退房
     */
    int checkOut(Integer id, Date checkOutTime, BigDecimal totalAmount);
}